from common.dwc.maestro.key_mapper.product_event_key_mapper import KEY_MAPPER_FUNC as PRODUCT_EVENT_KEY_MAPPER_FUNC
from common.dwc.maestro.key_mapper.op_event_key_mapper import KEY_MAPPER_FUNC as OP_EVENT_KEY_MAPPER_FUNC
from common.dwc.maestro.key_mapper.user_event_key_mapper import KEY_MAPPER_FUNC as USER_EVENT_KEY_MAPPER_FUNC
from common.dwc.maestro.key_mapper.integrated_event_key_mapper import KEY_MAPPER_FUNC as INTEGRATED_EVENT_KEY_MAPPER_FUNC

KEY_MAPPER_FUNC = PRODUCT_EVENT_KEY_MAPPER_FUNC
KEY_MAPPER_FUNC.update(OP_EVENT_KEY_MAPPER_FUNC)
KEY_MAPPER_FUNC.update(USER_EVENT_KEY_MAPPER_FUNC)
KEY_MAPPER_FUNC.update(INTEGRATED_EVENT_KEY_MAPPER_FUNC)


def get_key_mapper(logical_page_id, index, **kwargs):
    # 基礎事件約定logical_page_id為event_id
    assert logical_page_id in KEY_MAPPER_FUNC
    func = KEY_MAPPER_FUNC.get(logical_page_id)
    key_mapper = func(index, **kwargs)
    return key_mapper
